<?php

class Consulta_model extends CI_Model
{

    function __construct()
    {
        parent::__construct();
    }
    
    public function nuevo($datos,$persona){
         $sql = $this->db->query("
            select
            HistoriaClinica historia
            from historiaclinica where Persona=$persona
            ;");
       
         $row=$sql->result_array();
          
        $historia_clinica=  $row[0]['historia'];
        
        $this->db->insert('procedimiento', array('Fecha' => date("Y-m-d H:i:s"),'HistoriaClinica'=>$historia_clinica,'Persona'=>$persona,'EstadoProcedimiento'=>"1" ));
        $idProc=$this->db->insert_id();
        $datos['Procedimiento']=$idProc;
        
        
        //ACTUALIZO LA CITA
        if ($datos['Cita']!=null) {
            $data = array('Procedimiento' => $idProc,'estado'=>1 );
            $this->db->where('Cita', $datos['Cita']);
            $this->db->update('cita', $data); 
        }
        
        return $this->db->insert('consulta', $datos);
        
    }
    
    public function getProcedimiento($id){
        
        $query = $this->db->get_where('procedimiento', array('Procedimiento' => $id));;
        $row=$query->result_array();
         
        return $row[0];
    }

    public function getConsultaCompleta($idProc){
        $resultado=array();
        $query = $this->db->get_where('procedimiento', array('Procedimiento' => $idProc));;
        $row=$query->result_array();
        $resultado['procedimiento']= $row[0];
        
        
        $query = $this->db->get_where('consulta', array('Procedimiento' => $idProc));;
        $row=$query->result_array();
        if(count($row)>0)
            $resultado['consulta']= $row[0];
        
        
        $query = $this->db->get_where('persona', array('Persona' =>  $resultado['procedimiento']['Persona']));;
        $row=$query->result_array();
        if(count($row)>0)
            $resultado['persona']= $row[0];
        
        $query = $this->db->get_where('persona', array('Persona' =>  $resultado['consulta']['PersonaD']));;
        $row=$query->result_array();
        if(count($row)>0)
            $resultado['doctor']= $row[0];
        
        $this->db->select('tratamiento.*,producto.Nombre');
        $this->db->from('tratamiento');
        $this->db->join('producto', 'producto.Producto =tratamiento.Producto');
        //$this->db->join('frecuencia', 'frecuencia.frecuencia =tratamiento.frecuencia');
        $this->db->where(array('tratamiento.Procedimiento' => $idProc));
        $query = $this->db->get();
        $row=$query->result_array();
        $resultado['tratamiento']= $row;
        
       
        
        $this->db->select('*');
        $this->db->from('detalleenfermedad');
        $this->db->join('enfermedad', 'enfermedad.Enfermedad =detalleenfermedad.Enfermedad');
        $this->db->where(array('detalleenfermedad.Procedimiento' => $idProc));
        $query = $this->db->get();        
        $row=$query->result_array();
        $resultado['detalleEnfermedad']= $row;
        
        
        
        $this->db->select('*');
        $this->db->from('detallediagnostico');
        $this->db->join('diagnosticoxespecialidad', 'detallediagnostico.Campo =diagnosticoxespecialidad.Campo and detallediagnostico.Especialidad=diagnosticoxespecialidad.Especialidad');
        $this->db->where(array('detallediagnostico.Procedimiento' => $idProc));
        $query = $this->db->get();         
        //$query = $this->db->get_where('detallediagnostico', array('Procedimiento' =>  $idProc));;
        $row=$query->result_array();
        $resultado['detalleDiagnostico']= $row;
       
        $query=$this->db->query("select especialidadpadre(co.especialidad)  especialidad from consulta co,procedimiento pr where co.procedimiento=pr.procedimiento and co.procedimiento=".$idProc.";");
        $rowi=$query->result_array();
        $resultado['especialidad']=$rowi;
        
        $this->db->select('*');
        $this->db->from('orden');
        $this->db->join('especialidad', 'especialidad.Especialidad =orden.Especialidad');
        $this->db->where(array('orden.Persona' =>  $resultado['procedimiento']['Persona'],'orden.Procedimiento' => $idProc));
        $query = $this->db->get();        
        //$query = $this->db->get_where('orden', array('Persona' =>  $resultado['procedimiento']['Persona'],'Procedimiento' => $idProc));
        $resultado['orden']=$query->result_array();
        
        $this->load->model('Hospitalizacion_Model');
//        $query = $this->db->get_where('seguimiento', array('Procedimiento' => $idProc));;
//        $row=$query->result_array();
        $resultado['seguimiento']= $this->Hospitalizacion_Model->buscarSeguimientos($idProc);
        if((count($resultado['seguimiento']))>0){
            $resultado['detalles']=array();
            foreach ($resultado['seguimiento'] as $seg) {
                $detalles = $this->Hospitalizacion_Model->buscarDetalleSeguimiento($seg['idSeguimiento'], $idProc);
                //$detalleFormateado = $this->formatearDetalleSeguimientoEstandar($detalles);
                array_push($resultado['detalles'],$detalles);
            }
//        
        }
        return $resultado;
    }


    public function actualizarConsulta($datos,$procedimiento){
//        $this->db->insert('procedimiento', array('RutaClase' => 'clase' ));
//        $idProc=$this->db->insert_id();
//        $datos['Procedimiento']=$idProc;
//        
        $this->db->start_cache();
        //ACTUALIZO LA CITA
      
         //$data = array('Procedimiento' => $idProc );
        
         $this->db->where('Procedimiento', $procedimiento);
         $resultado=$this->db->update('consulta', $datos); 
       
        $this->db->flush_cache();
        
        return $resultado;
    }
    
    function consultaByProcedimiento($procedimiento){
        $sql = $this->db->query("
            select
            pa.Codigo Codigo,
            pe.Persona Persona,
            pe.Nombres Nombres,
            pe.Apellido_Paterno Apellido_Paterno,
            pe.Apellido_Materno Apellido_Materno,
            pe.Direccion Direccion,
            pe.Telefono Telefono,
            proc.Procedimiento Procedimiento
            from paciente pa, persona pe, procedimiento proc 
            where pa.Persona = pe.Persona 
            and  proc.persona=pe.persona and proc.Procedimiento=$procedimiento 
            ;");
       
       $row=$sql->result_array();
          
       return $row[0];
    }
    
    
    function ultimoProcedimientoCirugia($codigo){
             
        $cond1 = "where p.Persona=$codigo";
        
        $sql = $this->db->query("
            select
            p.procedimiento procedimiento
            from
            consulta c, procedimiento p 
            $cond1
            and EspecialidadPadre(c.Especialidad)=".ID_ESP_CIRUGIA." 
            and p.procedimiento=c.procedimiento 
            order by p.procedimiento desc
            ;");
       
          $row=$sql->result_array();
          
       return $row[0];
    }   
 
    function ultimoProcedimientoHospitalizacion($codigo){
             
        $cond1 = "where p.Persona=$codigo";
        
        $sql = $this->db->query("
            select
            p.procedimiento procedimiento
            from
            consulta c, procedimiento p 
            $cond1
            and EspecialidadPadre(c.Especialidad)=40 
            and p.procedimiento=c.procedimiento 
            order by p.procedimiento desc
            ;");
       
          $row=$sql->result_array();
          
       return $row[0];
    }   
    
    function ultimoProcedimientoAmbulatoria($codigo){
             
        $cond1 = "where p.Persona=$codigo";
        
        $sql = $this->db->query("
            select
            p.procedimiento procedimiento
            from
            consulta c, procedimiento p 
            $cond1
            and EspecialidadPadre(c.Especialidad)=".ID_ESP_CITAAMBULATORIA." 
            and p.procedimiento=c.procedimiento 
            order by p.procedimiento desc
            ;");
       
          $row=$sql->result_array();
          
       return $row[0];
    }   
    
    function ultimoProcedimientoTerapia($codigo){
             //Nueva función creada 30/10/2012
        $cond1 = "where p.Persona=$codigo";
        
        $sql = $this->db->query("
            select
            p.procedimiento procedimiento
            from
            consulta c, procedimiento p 
            $cond1
            and EspecialidadPadre(c.Especialidad)=".ID_ESP_TERAPIA." 
            and p.procedimiento=c.procedimiento 
            order by p.procedimiento desc
            ;");
       
          $row=$sql->result_array();
          
       return $row[0];
    }
    
    function ultimoProcedimientoEmergencia($codigo){
             
        $cond1 = "where p.Persona=$codigo";
        
        $sql = $this->db->query("
            select
            p.procedimiento procedimiento
            from
            consulta c, procedimiento p 
            $cond1
            and EspecialidadPadre(c.Especialidad)=".ID_ESP_EMERGENCIAS." 
            and p.procedimiento=c.procedimiento 
            order by p.procedimiento desc
            ;");
       
          $row=$sql->result_array();
          
       return $row[0];
    }   
    public function obtenerEspecialidadPadreSiguiente($idespecialidad,$idpadre){
        //Esta siendo usada 30/10/2012
        $sql = $this->db->query("
            select count(*) conteo from especialidad where especialidadpadre=".$idpadre." and especialidad=".$idespecialidad."
            ;");
        $row=$sql->result_array();
        return $row[0]['conteo'];
    }
    public function nuevaEnfermedad($enfermedades,$procedimiento){
        
        $enfermedades['procedimiento']=$procedimiento;
        
        return $this->db->insert('detalleenfermedad', $enfermedades);
        
    }
    
    function obtenerCombo($id){
        
        
        $cond1 = "where Codigo=$id";
        
        $sql = $this->db->query("
            select
            Descripcion value,
            Descripcion label    
            from
            maestrodata 
            $cond1
            ;");
       
        $query=$sql->result_array();
        
        return $query;
    }
    function obtenerPlantilla($especialidad) {
   
        $this->db->where(array('Especialidad'=>$especialidad,'Identificador'=>1));
        $this->db->select('*');
        $query = $this->db->get('diagnosticoxespecialidad')->result_array();
       
        $i=0;
        foreach($query as $q){
            
            if($q['TablaData']!=0){
                
                $combo=$this->obtenerCombo($q['TablaData']);
                $query[$i]['datosCombo']=$combo;
                
            }
            $i++;
        }
        
//        print_r($query);
//        exit;
        return $query;
    }
    
    function buscarEspecialidadPadre($idespecialidad){
        //Creado por Miguel
        $sql = $this->db->query("select EspecialidadPadre(".$idespecialidad.") especialidad 
                                from dual;");
        return $sql->result_array();
    }
    
    function nuevoDato($datosMet,$procedimiento,$j){
       
        $datosMet['Procedimiento']=$procedimiento;
        $datosMet['Campo']=$j;
        
        return $this->db->insert('detallediagnostico', $datosMet);
    
    }
    
    public function buscarConsulta($argNombre, $argApePat, $argApeMat, $argEspecialidad,$fecI,$fecF){
        
            
        if ($argNombre != ""){
            $cond1 = "and per.Nombres like '%$argNombre%'";
        }else{
            $cond1 = "";
        }
        if ($argApePat != ""){
            $cond2 = "and per.Apellido_Paterno like '%$argApePat%'";
        }else{
            $cond2 = "";
        }
        if ($argApeMat != ""){
            $cond3 = "and per.Apellido_Materno like '%$argApeMat%'";
        }else{
            $cond3 = "";
        }
        if ($argEspecialidad != ""){
            $cond4 = "and esp.Especialidad = $argEspecialidad";
        }else{
            $cond4 = "";
        }
        $sql = $this->db->query("
            SELECT 
                per.Persona IdPersona, 
                per.Nombres Nombres, 
                per.Apellido_Paterno Apellido_Paterno, 
                per.Apellido_Materno Apellido_Materno, 
                c.Procedimiento Procedimiento, 
                c.Resultado Resultado, 
                date_format(proc.Fecha,'%d-%m-%Y') Fecha,
                esp.Especialidad Especialidad, 
                EspecialidadPadre(esp.Especialidad) especialidadPadre, 
                esp.Descripcion EspecialidadDesc,
                per2.Apellido_Paterno doctor_Paterno,
                per2.Apellido_Materno  doctor_Materno,
                per2.Nombres  doctor_Nombres,
                per2.Persona idDoctor
            FROM persona per, paciente pac, procedimiento proc, consulta c,persona per2, especialidad esp
            WHERE per.Persona = pac.Persona
            AND pac.Persona = proc.Persona
            AND proc.Procedimiento = c.Procedimiento
            AND c.PersonaD=per2.Persona    
            AND esp.Especialidad=c.Especialidad
            $cond1 $cond2 $cond3 $cond4 and STR_TO_DATE('".$fecI."','%d-%m-%Y')<=proc.Fecha and
                  STR_TO_DATE('".$fecF."','%d-%m-%Y')>=proc.Fecha ");
        return $sql->result_array();
            
        }
        public function buscarProcedimiento($argNombre,$idPaciente,$argEspecialidad,$fecI,$fecF){
        
            
        if ($argNombre != ""){
            $cond1 = "and (per2.Nombres like '%$argNombre%'";
            $cond2 = "or per2.Apellido_Paterno like '%$argNombre%'";
            $cond3 = "or per2.Apellido_Materno like '%$argNombre%')";
        }else{
            $cond1 = "";
            $cond2 = "";
            $cond3 = "";
        }
        if ($argEspecialidad != ""){
            $cond4 = "and EspecialidadPadre(esp.Especialidad) = $argEspecialidad";
        }else{
            $cond4 = "";
        }
        //            
        $qConsulta= "
            SELECT 
                per.Persona IdPersona, 
                per.Nombres Nombres, 
                per.Apellido_Paterno Apellido_Paterno, 
                per.Apellido_Materno Apellido_Materno, 
                c.Procedimiento Procedimiento, 
                c.Resultado Resultado, 
                date_format(proc.Fecha,'%d-%m-%Y') Fecha,
                esp.Especialidad Especialidad, 
                descEspecialidadPadre(esp.Especialidad) especialidadPadre,
                EspecialidadPadre(esp.Especialidad) IdEspecialidadPadre,
                esp.Descripcion EspecialidadDesc,
                per2.Apellido_Paterno doctor_Paterno,
                per2.Apellido_Materno  doctor_Materno,
                per2.Nombres  doctor_Nombres,
                per2.Persona idDoctor
            FROM persona per, paciente pac, procedimiento proc, consulta c,persona per2, especialidad esp
            WHERE per.Persona = pac.Persona
            AND per.Persona= ".$idPaciente."
            AND pac.Persona = proc.Persona
            AND proc.Procedimiento = c.Procedimiento
            AND c.PersonaD=per2.Persona    
            AND esp.Especialidad=c.Especialidad
            $cond1 $cond2 $cond3 $cond4 and STR_TO_DATE('".$fecI."','%d-%m-%Y')<=proc.Fecha and
                  STR_TO_DATE('".$fecF."','%d-%m-%Y')>=proc.Fecha
                ";
        
        $qExamen= "
            SELECT 
                per.Persona IdPersona, 
                per.Nombres Nombres, 
                per.Apellido_Paterno Apellido_Paterno, 
                per.Apellido_Materno Apellido_Materno, 
                c.Procedimiento Procedimiento, 
                c.Resultado Resultado, 
                date_format(proc.Fecha,'%d-%m-%Y') Fecha,
                esp.Especialidad Especialidad,
                descEspecialidadPadre(esp.Especialidad) especialidadPadre,
                EspecialidadPadre(esp.Especialidad) IdEspecialidadPadre, 
                esp.Descripcion EspecialidadDesc,
                per2.Apellido_Paterno doctor_Paterno,
                per2.Apellido_Materno  doctor_Materno,
                per2.Nombres  doctor_Nombres,
                per2.Persona idDoctor
            FROM persona per, paciente pac, procedimiento proc, examen c,persona per2, cita ci,especialidad esp
            WHERE per.Persona = pac.Persona
            AND pac.Persona = proc.Persona
            AND per.Persona= ".$idPaciente."
            AND proc.Procedimiento = c.Procedimiento
            AND c.PersonaD=per2.Persona    
            AND ci.Cita=c.Cita
            AND esp.Especialidad=ci.Especialidad
            $cond1 $cond2 $cond3 $cond4 and STR_TO_DATE('".$fecI."','%d-%m-%Y')<=proc.Fecha and
                  STR_TO_DATE('".$fecF."','%d-%m-%Y')>=proc.Fecha
                      ";
        if (strcmp($cond4,"")==0){ //se muestra todo
            $query= $qConsulta . " union ". $qExamen ." ORDER BY  Fecha ";
        }
        elseif ( strcmp($argEspecialidad,ID_ESP_EXAMENES."")==0){
            $query = $qExamen. "   ORDER BY  proc.Fecha       ";
        }
        else{    
            $query= $qConsulta. "   ORDER BY  proc.Fecha       ";
        }
        $sql = $this->db->query($query);
        return $sql->result_array();
            
        }
        
         public function getExamenCompleto($idProc){
        $resultado=array();
        $query = $this->db->get_where('procedimiento', array('Procedimiento' => $idProc));;
        $row=$query->result_array();
        $resultado['procedimiento']= $row[0];
        
        
        $query = $this->db->get_where('examen', array('Procedimiento' => $idProc));;
        $row=$query->result_array();
        if(count($row)>0)
            $resultado['examen']= $row[0];
        
        
        $query = $this->db->get_where('persona', array('Persona' =>  $resultado['procedimiento']['Persona']));;
        $row=$query->result_array();
        if(count($row)>0)
            $resultado['persona']= $row[0];
        
         $query = $this->db->get_where('persona', array('Persona' =>  $resultado['examen']['PersonaD']));;
        $row=$query->result_array();
        if(count($row)>0)
            $resultado['doctor']= $row[0];
                
        
        $this->db->select('*');
        $this->db->from('detallediagnostico');
        $this->db->join('diagnosticoxespecialidad', 'detallediagnostico.Campo =diagnosticoxespecialidad.Campo and detallediagnostico.Especialidad=diagnosticoxespecialidad.Especialidad');
        $this->db->where(array('detallediagnostico.Procedimiento' => $idProc));
        $query = $this->db->get();         
        //$query = $this->db->get_where('detallediagnostico', array('Procedimiento' =>  $idProc));;
        $row=$query->result_array();
        $resultado['detalleDiagnostico']= $row;
       
        $query=$this->db->query("select especialidadpadre(ci.especialidad)  especialidad from examen ex,procedimiento pr, cita ci where ex.procedimiento=pr.procedimiento and ex.procedimiento=".$idProc." and ci.cita=ex.cita;");
        $rowi=$query->result_array();
        $resultado['especialidad']=$rowi;
        
               
        return $resultado;
        
        
    }
}

